package code.class1;

/**
 * https://leetcode.cn/problems/adding-spaces-to-a-string
 * 向字符串添加空格
 */
public class Code16_addSpaces {
    public static void main(String[] args) {

        String s = "icodeinpython";
        int[] spaces = {1, 5, 7, 9};
        String ans = addSpaces(s, spaces);
        System.out.println("ans = " + ans);
    }

    public static String addSpaces(String s, int[] spaces) {
        int m = s.length() + spaces.length;
        char[] chars = s.toCharArray();
        char[] ans = new char[m];
        /**
         * spaces[i] + i 的意思是：
         * 在原字符串的 spaces[i] 位置插入空格，并且随着空格的插入，其他字符的索引会向后移动，
         * 因此 + i 是为了正确调整空格后的字符位置。
         *
         */
        for (int i = 0; i < spaces.length; i++) {
            ans[i + spaces[i]] = ' ';
        }
        for (int i = 0, j = 0; i < m; i++) {
            if (ans[i] != ' ') {
                ans[i] = chars[j++];
            }
        }
        return new String(ans);
    }
}
